SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE  Procedure [dbo].[SP_TCMOVI_CAJA_I01]        
/*-------------------------------------------------------*/        
/*---Empresa              : OFISIS S.A.                --*/        
/*---Cliente              : OFISIS                 --*/        
/*---Sistema              : Presupuesto                --*/        
/*---M¸dulo               : Empresa                    --*/        
/*---Programa             : Grabaci¸n Cabecera         --*/        
/*---                       Movimiento Caja   (Egresos)--*/        
/*---Script               : tcmovi_c.sql               --*/        
/*---Nombre SP            : SP_TCMOVI_CAJA_I01         --*/        
/*---Desarrollado por     : Javier Flores A.           --*/        
/*---Fecha Creaci¸n       : 10/07/1999                 --*/        
/*---Base Datos           : Microsoft Sql Server       --*/        
/*---Versi¸n              : 7.0                        --*/        
/*---Invoca a SP          :                            --*/        
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/      
/*---Modificado 1 por     : Miguel Carrasco                       --*/      
/*---Fecha Modificaci÷n   : 23/06/2009                 --*/       
/*---Detalle Modificaci÷n : Actividad tipo de operacion solo cabecera--*/   
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/        
/*---Comentarios                                       --*/        
/*---                                                  --*/        
/*---                                                  --*/        
/*-------------------------------------------------------*/        
        
/*-------------------------------------------------------*/        
/*---Drop Proc SP_TCMOVI_CAJA_I01                      --*/        
/*---Grant Execute on SP_TCMOVI_CAJA_I01 to public         --*/         
/*---SP_TCMOVI_CAJA_I01                                --*/        
/*-------------------------------------------------------*/        
 @ISCO_EMPR   TD_VC_002,         
 @ISCO_USUA_MODI  TD_VC_008_USUA,        
 @ISCO_CAJA   TD_VC_008,         
 @ISAA_CAJA   TD_VC_004,         
 @ISMM_CAJA   TD_VC_002,         
 @ISTI_MOVI   TD_VC_001,          
 @ISNU_COMP_CAJA  TD_VC_008,         
 @IDFE_OPER   TD_DT_001,         
 @ISCO_TIPO_OPER  TD_VC_003,         
 @ISCO_SUBR     TD_VC_003,         
 @INFA_TIPO_CAMB  TD_NU_015_006,         
 @INFA_CAMB_EXTR  TD_NU_015_006,         
 @INIM_MOVI   TD_NU_016_004,         
 @ISTI_ENTI   TD_VC_001,        
 @ISCO_ENTI   TD_VC_020,         
 @ISDE_ENTI   TD_VC_100,         
 @ISDE_OBSE   TD_VC_100,         
 @ISTI_CORR_INEG  TD_VC_001,        
 @INUL_CORR_EGRE  TD_IN_001,        
 @INUL_CORR_INEG  TD_IN_001,        
 @ISCO_ENTR_REND  TD_VC_004,        
 @ISCO_UNID_CNTB  TD_VC_003,        
 @ISNU_SOLI       TD_VC_010,        
 @ISST_ASTO_RESU  TD_VC_001,        
 @ISTI_DOCU_ENRE  TD_VC_003,       
 @ISNU_SERI_ENRE  TD_VC_004,       
 @ISNU_DOCU_ENRE  TD_VC_020,
 @ISCO_ORDE_SERV	TD_VC_020

	As
Declare        
   @VNCO_NUEV_NUME      TD_IN_001,         
   @VSCO_NUEV_CHAR      TD_VC_008,        
   @VNNU_REGI           TD_IN_001,        
   @VSST_INTE_BACH TD_VC_001,        
   @VSTI_OPNI_CARG TD_VC_003,        
   @VSTI_OPNI_ABON TD_VC_003,      
/*-----------------------------------*/    
   @VSNU_DOCU_ENRE  TD_VC_020,      
   @VSST_SERI   TD_VC_001,       
   @VSST_FILL   TD_VC_001,       
   @VNNU_LONG   TD_IN_001,       
   @VNNU_LONG_SERI  TD_IN_001,      
   @VSCO_TIPO_OPER      TD_VC_003,      
   @VSST_DOCU_ENRE      TD_VC_001        
        
 BEGIN TRAN SP_TCMOVI_CAJA_I01        
        
  /** inserta en la cabecera de caja **/        
        
     Select @VSST_INTE_BACH = ST_INTE_BACH,        
 @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER        
     From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR        
        
   If @ISTI_DOCU_ENRE IS NOT NULL or @ISNU_DOCU_ENRE IS NOT NULL      
    Begin      
    Select  @VSST_SERI = ST_SERI, @VSST_FILL = ST_FILL, @VNNU_LONG = NU_LONG, @VNNU_LONG_SERI = NU_LONG_SERI      
    From    TTDOCU_CNTB      
    Where   TI_DOCU = @ISTI_DOCU_ENRE      
      
    If @VSST_SERI = 'S'      
      Select  @VSNU_DOCU_ENRE = @ISNU_SERI_ENRE +'-'+ @ISNU_DOCU_ENRE      
      
    If @VSST_SERI = 'N'      
      Select  @VSNU_DOCU_ENRE = @ISNU_DOCU_ENRE      
      
    End      
          
   If Rtrim(@ISCO_ENTR_REND) = ''        
       Select @ISCO_ENTR_REND = NULL        
        
    /*Busco el ultimo correlativo usado para insertar el nro de comprobante*/         
    If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND         
 @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON        
        
 Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR,@ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_CAJA OUTPUT     
   
        
    Else        
 Begin        
      Select   @VNNU_REGI = Count(*)         
      From  TCMOVI_CAJA        
      Where  CO_EMPR = @ISCO_EMPR         
       And CO_CAJA = @ISCO_CAJA        
       And AA_CAJA = @ISAA_CAJA        
       And MM_CAJA = @ISMM_CAJA         
       And TI_MOVI = 'E'          
       And NU_COMP_CAJA = @ISNU_COMP_CAJA        
        
      If @VNNU_REGI > 0 OR RTRIM(ISNULL(@ISNU_COMP_CAJA, '')) = ''        
   Begin             
           Select @VSCO_NUEV_CHAR  = ISNULL(MAX(NU_COMP_CAJA) , '0')        
           From TCMOVI_CAJA        
    Where CO_EMPR = @ISCO_EMPR         
           And   CO_CAJA = @ISCO_CAJA        
           And   AA_CAJA = @ISAA_CAJA         
        
           And   MM_CAJA = @ISMM_CAJA         
           And   TI_MOVI = 'E'          
    And   NU_COMP_CAJA LIKE '000%'        
        
           Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1        
        
    Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)        
        
        
           -- RELLENA DE CEROS HASTA 8 CARACTERES         
    Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'') 
+LTRIM(RTRIM(@VSCO_NUEV_CHAR))                  
        
           Select @ISNU_COMP_CAJA = @VSCO_NUEV_CHAR         
         End        
        
        
 End        
  
 IF RTRIM( ISNULL (@ISNU_SERI_ENRE,''))!= '' AND NOT EXISTS (Select NU_DOCU_ENRE  
 From TCMOVI_CAJA  
 Where CO_EMPR = @ISCO_EMPR  
 And CO_CAJA = @ISCO_CAJA  
 And TI_MOVI = 'I'  
 And TI_DOCU_ENRE IS NOT NULL  
 And TI_SITU = 'ACT'  
 And TI_DOCU_ENRE = @ISTI_DOCU_ENRE  
 And NU_DOCU_ENRE = @ISNU_DOCU_ENRE)  

 Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENRE, @ISNU_SERI_ENRE, @ISNU_DOCU_ENRE OUTPUT          
  
  
        
    Insert Into TCMOVI_CAJA(        
    CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,         
    FE_OPER, CO_TIPO_OPER, CO_SUBR, FA_TIPO_CAMB, FA_CAMB_EXTR, IM_MOVI, CO_ENTR_REND, TI_ENTI,         
    CO_ENTI, DE_ENTI, DE_OBSE, ST_CONT, NU_PROC, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI,FE_USUA_MODI, 
CO_UNID_CONC,         
    NU_SOLI, TI_DOCU_ENRE, NU_DOCU_ENRE,CO_ORDE_SERV)        
    Values (        
    @ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI,         
    @ISNU_COMP_CAJA, @IDFE_OPER, @ISCO_TIPO_OPER, @ISCO_SUBR, @INFA_TIPO_CAMB, @INFA_CAMB_EXTR, @INIM_MOVI,         
    RTRIM(@ISCO_ENTR_REND), @ISTI_ENTI, @ISCO_ENTI, @ISDE_ENTI, @ISDE_OBSE, 'N', NULL,         
    'ACT', @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI,GETDATE(), @ISCO_UNID_CNTB, @ISNU_SOLI, @ISTI_DOCU_ENRE, 
@VSNU_DOCU_ENRE,@ISCO_ORDE_SERV)        
        
    If @@error <> 0        
       Begin        
         Rollback tran        
         Return        
       End        
          
        
    /* Actualizando Estado y Fecha Liquidaci®n Solicitud Caja */        
    
     Update  TMSOLI_CABA         
 Set  TI_SITU = 'LIQ',         
  FE_LIQU = @IDFE_OPER,        
            CO_USUA_MODI = @ISCO_USUA_MODI,         
  FE_USUA_MODI = GETDATE()        
     Where   CO_EMPR = @ISCO_EMPR        
      And NU_SOLI = @ISNU_SOLI        
        
    If @@error <> 0        
       Begin        
         rollback tran        
    return        
       End          
        
        
   /* ----------- Actualiza los Correlativos ------------------ */        
    If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR         
 @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON        
      Begin            
  If @ISTI_CORR_INEG = 'N'        
    Begin        
  Select @INUL_CORR_EGRE = UL_CORR_EGRE         
         From TMSACA_MENS        
         WHERE CO_EMPR = @ISCO_EMPR          
         AND   CO_CAJA = @ISCO_CAJA        
         AND   AA_CAJA = @ISAA_CAJA         
         AND   MM_CAJA = @ISMM_CAJA         
        
         Update TMSACA_MENS        
         Set    UL_CORR_EGRE = @INUL_CORR_EGRE + 1, CO_USUA_MODI = @ISCO_USUA_MODI,         
                     FE_USUA_MODI = GETDATE()        
          Where  CO_EMPR = @ISCO_EMPR         
         And    CO_CAJA = @ISCO_CAJA        
         And    AA_CAJA = @ISAA_CAJA        
         And    MM_CAJA = @ISMM_CAJA        
        
         If @@error <> 0        
                 Begin        
                   Rollback tran        
              Return        
                 End        
           End        
     Else        
    Begin        
    Select @INUL_CORR_INEG = UL_CORR_INEG         
         From TMSACA_MENS        
         WHERE CO_EMPR = @ISCO_EMPR          
         AND   CO_CAJA = @ISCO_CAJA        
         AND   AA_CAJA = @ISAA_CAJA         
         AND   MM_CAJA = @ISMM_CAJA         
        
         Update TMSACA_MENS        
         Set    UL_CORR_INEG = @INUL_CORR_INEG + 1, CO_USUA_MODI = @ISCO_USUA_MODI,         
                     FE_USUA_MODI = GETDATE()        
          Where  CO_EMPR = @ISCO_EMPR         
         And    CO_CAJA = @ISCO_CAJA        
         And    AA_CAJA = @ISAA_CAJA        
         And    MM_CAJA = @ISMM_CAJA        
        
         If @@error <> 0        
                 Begin        
                   Rollback tran        
              Return        
                 End        
        End        
             
    End        
        
 Commit Tran        
        
SELECT @ISNU_COMP_CAJA        
RETURN        
        
/*------------------------ Fin ------------------------------*/


GO
